// 导入pinia和vue的reactive方法
import { defineStore } from 'pinia'
import { reactive } from 'vue'

// 定义一个名为user的store
const useUser = defineStore('user', () => {
    // 定义一个默认的用户对象
    const defaultUser = {
        isLogin: false,
        username: '',
        avatar: ''
    }
    // 使用reactive方法将默认用户对象转换为响应式对象
    const user = reactive(Object.assign({}, defaultUser))
    // 定义一个更新用户信息的方法
    const updateUser = options => { 
        // 使用Object.assign方法将传入的options对象合并到user对象中
        Object.assign(user, options)
        // 返回更新后的user对象
        return user
    }
    // 定义一个移除用户信息的方法
    const removeUser = () => {
        // 使用Object.assign方法将默认用户对象合并到user对象中
        Object.assign(user, defaultUser) 
        // 返回更新后的user对象
        return user
    }
    // 返回user对象和更新用户信息的方法
    return { user, updateUser, removeUser }
},
{
    // 定义持久化策略
    persist: {
        enabled: true, strategies: [{
            key: 'user',
            storage: localStorage
        }]
    }
})
export default useUser